package br.com.SGF.bean;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.event.FlowEvent;

import br.com.SGF.dao.AtendimentoDAO;
import br.com.SGF.dao.ClienteDAO;
import br.com.SGF.dao.LocalDAO;
import br.com.SGF.dao.MacroServicoDAO;
import br.com.SGF.dao.SenhaDAO;
import br.com.SGF.dao.UsuarioDAO;
import br.com.SGF.domain.AtendimentoDomain;
import br.com.SGF.domain.ClienteDomain;
import br.com.SGF.domain.LocalDomain;
import br.com.SGF.domain.MacroServicoDomain;
import br.com.SGF.domain.SenhaDomain;
import br.com.SGF.domain.UsuarioDomain;
import br.com.SGF.util.JSFUtil;

@ManagedBean(name = "MBAtendimento")
@ViewScoped
public class AtendimentoBean {
	private AtendimentoDomain atendimento;
	private boolean skip;
	private List<ClienteDomain> listaCliente;
	private List<AtendimentoDomain> listaAtendimento;
	private List<LocalDomain> listaLocal;
	private List<UsuarioDomain> listaUsuario;
	private List<MacroServicoDomain> listaMacro;
	private List<SenhaDomain> listaSenha;
	private ClienteDomain cliente;
	private UsuarioDomain usu;
	private String acao;
	private UsuarioBean usuarioBean;

	public UsuarioDomain getUsu() {
		if(usu == null){
			usu = new UsuarioDomain();
		}
		return usu;
	}

	public void setUsu(UsuarioDomain usu) {
		this.usu = usu;
	}

	public UsuarioBean getUsuarioBean() {
		return usuarioBean;
	}

	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}

	public List<UsuarioDomain> getListaUsuario() {
		return listaUsuario;
	}

	public void setListaUsuario(List<UsuarioDomain> listaUsuario) {
		this.listaUsuario = listaUsuario;
	}

	public List<MacroServicoDomain> getListaMacro() {
		return listaMacro;
	}

	public void setListaMacro(List<MacroServicoDomain> listaMacro) {
		this.listaMacro = listaMacro;
	}

	public List<SenhaDomain> getListaSenha() {
		return listaSenha;
	}

	public void setListaSenha(List<SenhaDomain> listaSenha) {
		this.listaSenha = listaSenha;
	}

	public List<LocalDomain> getListaLocal() {
		return listaLocal;
	}

	public void setListaLocal(List<LocalDomain> listaLocal) {
		this.listaLocal = listaLocal;
	}

	public ClienteDomain getCliente() {
		if (cliente == null) {
			cliente = new ClienteDomain();
		}
		return cliente;
	}

	public void setCliente(ClienteDomain cliente) {
		this.cliente = cliente;
	}

	public List<AtendimentoDomain> getListaAtendimento() {
		return listaAtendimento;
	}

	public void setListaAtendimento(List<AtendimentoDomain> listaAtendimento) {
		this.listaAtendimento = listaAtendimento;
	}

	public List<ClienteDomain> getListaCliente() {
		return listaCliente;
	}

	public void setListaCliente(List<ClienteDomain> listaCliente) {
		this.listaCliente = listaCliente;
	}

	public boolean getSkip() {
		return skip;
	}

	public void setSkip(boolean skip) {
		this.skip = skip;
	}

	public AtendimentoDomain getAtendimento() {
		if (atendimento == null) {
			atendimento = new AtendimentoDomain();
		}
		return atendimento;
	}

	public void setAtendimento(AtendimentoDomain atendimento) {
		this.atendimento = atendimento;
	}

	public void saveOrUpdate() {

		try {
			AtendimentoDAO dao = new AtendimentoDAO();
			
//			usu.getCodUsu(5);
//			atendimento.setUsuario(usu);
			dao.saveOrUpdate(atendimento);

			JSFUtil.adicionarMensagemSucesso("Atendimento Finalizado Com Sucesso");
			System.out.println("depois try");
		} catch (RuntimeException e) {
			e.printStackTrace();
			JSFUtil.adicionarMensagemErro(e.getMessage());
		}
	}

	public String onFlowProcess(FlowEvent event) {

		return event.getNewStep();

	}

	public void carregar() {
		try {
			AtendimentoDAO dao = new AtendimentoDAO();
			listaAtendimento = dao.listaAtendimento();

			ClienteDAO cli = new ClienteDAO();
			listaCliente = cli.listarCliente();

			LocalDAO ldao = new LocalDAO();
			listaLocal = ldao.listaLocal();

			MacroServicoDAO mdao = new MacroServicoDAO();
			listaMacro = mdao.listaMacro();

			UsuarioDAO udao = new UsuarioDAO();
			listaUsuario = udao.listaUsuario();

			SenhaDAO sdao = new SenhaDAO();
			listaSenha = sdao.listar();

		} catch (RuntimeException ex) {
			ex.printStackTrace();
			JSFUtil.adicionarMensagemErro(ex.getMessage());

		}
	}

}
